﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using Spring.Context;
using Spring.Context.Support;
using GRUPO_4.Negocio;
using GRUPO_4.Dominio;

namespace GRUPO_4.Pruebas
{
    [TestFixture]
    public class TestEmpresaService
    {
        private IApplicationContext contexto = null;

        [TestFixtureSetUp]
        public void InicializarSpring()
        {
            this.contexto = new XmlApplicationContext(
                "assembly://GRUPO-4/GRUPO_4/CapaNegocio.xml",
                "assembly://GRUPO-4/GRUPO_4/CapaPersistencia.xml");
        }

        [Test]
        public void TestRealizarEmpresaCorrectamente()
        {
            EmpresaService empresaService = (EmpresaService)this.contexto.GetObject("empresaService");
            Assert.NotNull(empresaService);
            Empresa empresaRealizada = null;
            Assert.DoesNotThrow(delegate
            {
                Empresa empresaNueva = new Empresa();
                empresaNueva.CodEmpresa = 123567826;
                empresaNueva.Ruc= "23456789";
                empresaNueva.RazonSocial = "Citi";
                empresaNueva.telefono = "12356781";
                empresaNueva.email = "Citi@hotmail.com";
                empresaNueva.clave = "patp";
                empresaNueva.RubroEmpresa = "banco";

                empresaRealizada = empresaService.CrearEmpresa (empresaNueva);
            });

            Assert.NotNull(empresaRealizada);
            Assert.Greater(empresaRealizada.CodEmpresa, 0);
        }
        [Test]
        public void TestEliminarEmpresa()
        {

            EmpresaService empresaService = (EmpresaService)this.contexto.GetObject("empresaService");
            Assert.NotNull(empresaService);
            Empresa EmpresaExiste = empresaService.ObtenerEmpresa(12356781);
            Empresa empresaEliminada = null;
            Assert.DoesNotThrow(delegate
            {
                empresaService.EliminarEmpresa(EmpresaExiste);
            });
            Assert.Null(empresaEliminada);
        }

        [Test]
        public void TestListarEmpresa()
        {
            EmpresaService empresaService = (EmpresaService)this.contexto.GetObject("empresaService");
            Assert.NotNull(empresaService);
            ICollection<Empresa> listaEmpresa = null;
            Assert.DoesNotThrow(delegate
            {
                listaEmpresa = empresaService.ListarTodasEmpresas();
            });
            
            Console.WriteLine(listaEmpresa.Count);
            Assert.Greater(listaEmpresa.Count, 0);
            foreach (Empresa Ofer in listaEmpresa)
            {
                Console.WriteLine(Ofer.CodEmpresa + "|" + Ofer.Ruc + "|" + Ofer.RazonSocial + "|" + Ofer.telefono + "|" + Ofer.email + "|" + Ofer.clave + "|" + Ofer.RubroEmpresa);
            }
        }
             [Test]
        public void TestConsultarEmpresa()
        {
            EmpresaService empresaService = (EmpresaService)this.contexto.GetObject("empresaService");
            Assert.NotNull(empresaService);
            Empresa empresaConsultada = null;
           // Assert.DoesNotThrow(delegate
            //{
                empresaConsultada = empresaService.ObtenerEmpresa(33);
           // });
            empresaConsultada = empresaService.ObtenerEmpresa(123);
            Assert.NotNull(empresaConsultada);

        }
        }
        
    }
